撈很久居然是因為在變數裡用funtion
select *
from
CUST t2 with (nolock)
and BirthDate between dbo.YYYYMMDDtoCYMMDD (convert(varchar, getdate(), 112))-5 and dbo.YYYYMMDDtoCYMMDD (convert(varchar, getdate(), 112))
#這樣就解決了
declare @msDate int
declare @meDate int
set @msDate = dbo.YYYYMMDDtoCYMMDD (convert(varchar, getdate(), 112))-5
set @meDate = dbo.YYYYMMDDtoCYMMDD (convert(varchar, getdate(), 112))
select *
from
CUST t2 with (nolock)
where BirthDate between @msDate and @meDate
如果上面的方式還是不行,可以再試試用
EXEC('select ....')
如果 WHERE 會造成欄位轉型也會拖慢效能,
例如: A 欄位
型態是字串,但 WHERE 條件卻下 WHERE A = 1
,
SQL會向上轉型將所有 A 欄位
的資料轉成數字再做比對,
小弟最近遇到的問題,跟大大的例子有點像。
謝謝fyh711426的分享,原來隱含轉型也會~
之前資料少,這樣用沒感覺
這次遇到資料量大,才感覺出差異~